package service;

import pojo.RegistrationRecords;

import java.util.List;
import java.util.Map;

public interface RegistrationRecordsService {

    /**
     * 查询所有挂号记录
     * @return 挂号记录列表
     */
    List<RegistrationRecords> selectAllRecords();

    /**
     * 根据医生ID查询挂号记录
     * @param docId 医生ID
     * @return 挂号记录列表
     */
    List<RegistrationRecords> selectByDoctorId(String docId);

    /**
     * 根据日期查询挂号记录
     * @param day 日期
     * @return 挂号记录列表
     */
    List<RegistrationRecords> selectByDate(String day);

    /**
     * 统计各科室挂号数量
     * @return 科室名称和挂号数量的映射列表
     */
    List<Map<String, Object>> countByDepartment();

    /**
     * 查询医生排班信息
     * @return 医生排班列表
     */
    List<RegistrationRecords> selectDoctorSchedules();

    /**
     * 新增挂号记录
     * @param record 挂号记录
     * @return 影响行数
     */
    int insert(RegistrationRecords record);

    /**
     * 更新挂号记录
     * @param record 挂号记录
     * @return 影响行数
     */
    int updateByPrimaryKey(RegistrationRecords record);

    /**
     * 根据患者ID查询挂号记录
     * @param patientId 患者ID
     * @return 挂号记录列表
     */
    List<RegistrationRecords> selectByPatientId(String patientId);

    /**
     * 根据ID删除挂号记录
     * @param id 记录ID
     * @return 影响行数
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 根据ID查询挂号记录
     * @param id 记录ID
     * @return 挂号记录
     */
    RegistrationRecords selectByPrimaryKey(Integer id);
    List<RegistrationRecords> selectByDoctorIdAndDays(String docId, List<String> days);
}